package com.medusa.aps.business.modules.demand.model.input;

import com.medusa.aps.business.model.constant.RegexPool;
import com.medusa.aps.business.model.enums.SchedulingStatusEnum;
import com.medusa.aps.business.model.pagination.Page;
import com.medusa.aps.business.modules.demand.model.output.SchedulePageListModel;
import com.medusa.aps.business.global.model.o.RangeDate;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.validation.annotation.Validated;

import java.util.Collections;
import java.util.List;

/**
 * @author miskw
 * @date 2023/12/27
 */
@Getter
@Setter
@ToString
@Validated
@Schema(description = "排程运算分页列表请求参数")
public class SchedulePageQuery extends Page<SchedulePageListModel> {
    @Schema(description = "订单集合")
    private List<Integer> ids;
    /**
     * 订单号
     */
    @Schema(description = "订单号")
    @Pattern(regexp = RegexPool.NOT_CONTAIN_BLANK, message = "订单号不能包含空格")
    private String orderNumber;
    /**
     * 订单交期
     */
    @Schema(description = "订单交期")
    private RangeDate orderDeliveryDate;
    /**
     * 物料编码
     */
    @Schema(description = "物料编码")
    @Pattern(regexp = RegexPool.NOT_CONTAIN_BLANK, message = "物料编码不能包含空格")
    private String itemCode;
    /**
     * 物料名称
     */
    @Schema(description = "物料名称")
    private String itemName;
    /**
     * 客户名称
     */
    @Schema(description = "客户公司名称")
    private String customerCompanyName;
    /**
     * 客户编码
     */
    @Schema(description = "客户编码")
    private String customerCode;

    /**
     * 计划开始 开始-结束时间
     */
    @Schema(description = "计划开始")
    private RangeDate planBeginTime;
    /**
     * 计划结束 开始-结束时间
     */
    @Schema(description = "计划结束")
    private RangeDate planEndTime;
    /**
     * true--> 计划提前
     * false--> 计划延期
     */
    @Schema(description = "计划提前", example = "true--> 计划提前;false--> 计划延期")
    private Boolean isPrePlan;
    /**
     * true-->实际提前
     * false-->实际延期
     */
    @Schema(description = "实际提前", example = "true-->实际提前;false-->实际延期")
    private Boolean isPreReality;

    private SchedulingStatusEnum schedulingStatus;

}
